application: Protect against double shutdown
authorMatthias Clasen <mclasen@redhat.com>
Fri, 15 Jan 2016 22:36:13 +0000 (17:36 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 15 Jan 2016 22:37:55 +0000 (17:37 -0500)
It is not something that can happen normally.
But if it does, we shouldn't crash.

https://bugzilla.gnome.org/show_bug.cgi?id=760680

gtk/gtkapplication.c

index b69895101319179761915eaafaff663aa85020bc..77a4e1c0e9a58331383453c491ab225027f6a539 100644 (file)
@@ -620,8 +620,7 @@ gtk_application_startup (GApplication *g_application)
 {
   GtkApplication *application = GTK_APPLICATION (g_application);
 
-  G_APPLICATION_CLASS (gtk_application_parent_class)
-    ->startup (g_application);
+  G_APPLICATION_CLASS (gtk_application_parent_class)->startup (g_application);
 
   gtk_action_muxer_insert (application->priv->muxer, "app", G_ACTION_GROUP (application));
 
@@ -638,6 +637,9 @@ gtk_application_shutdown (GApplication *g_application)
 {
   GtkApplication *application = GTK_APPLICATION (g_application);
 
+  if (application->priv->impl == NULL)
+    return;
+
   gtk_application_impl_shutdown (application->priv->impl);
   g_clear_object (&application->priv->impl);
 
@@ -651,8 +653,7 @@ gtk_application_shutdown (GApplication *g_application)
   /* Synchronize the recent manager singleton */
   _gtk_recent_manager_sync ();
 
-  G_APPLICATION_CLASS (gtk_application_parent_class)
-    ->shutdown (g_application);
+  G_APPLICATION_CLASS (gtk_application_parent_class)->shutdown (g_application);
 }
 
 static gboolean